/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"BB8BECDD-F1DA-4340-9227-6C1EFC4E3CEE",variableType:8}
 */
var gCotizacion = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B6096609-C184-47FE-950B-B173B905121B",variableType:4}
 */
var gHabitaciones = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"199CB181-C02D-4BB0-ADD6-A96171BFBF06",variableType:4}
 */
var gMonedaNacional = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C1CD3B04-2A1E-4350-B502-7642A83CE3E9",variableType:4}
 */
var gMoneda = 1;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"5BF69663-DAAE-47B2-BC35-8F9AB53B31CA"}
 */
var gTarifasCliente = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"660CABC2-AE60-45E9-9110-39BF77EC775E",variableType:4}
 */
var gUsuarioId = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6AFBB582-6F34-4346-BB48-24677021EBD2",variableType:4}
 */
var gCantMenores = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"FA466921-4382-4CA6-90D6-93A692BC1A54"}
 */
var gCero = '0';

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"511B7F52-647F-48F5-820E-76AB3302F5CF"}
 */
var gHabFaltantes = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"05FD5ECB-6560-46D3-82C6-A370888DF278",variableType:93}
 */
var gFechaHasta = null;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"D4302A81-E5C1-4751-B02B-D1E2C214E02B",variableType:93}
 */
var gFechaDesde = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CDA55236-2D04-4AA1-9886-3177CC7A5A09",variableType:4}
 */
var gTemporadaId = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E0D8F780-E95C-41EB-B2B9-773E398D6633",variableType:4}
 */
var gTipoHabitacionId = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"351BD762-01E1-4765-8679-30B15FB41285",variableType:4}
 */
var gTarifaId = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"64BEEFFC-F812-4298-B0AD-0270A650A91D",variableType:4}
 */
var gCantPasajeros = 2;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"BC062805-1027-430F-B1B7-A49E04B89D1D",variableType:4}
 */
var gClienteId = 9;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"25F5F66F-3B4D-403C-9AA5-06FC50013F34",variableType:93}
 */
var gFecha1 = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6EE576DC-1DD0-48D8-B033-E2A91BB15588",variableType:4}
 */
var gActivo = 1;

/**
 * @type {Date}
 *
 * @properties={typeid:35,uuid:"5DBB7A52-EBCF-43DF-9D19-4491C0F25E27",variableType:93}
 */
var gHoy = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"973B80DE-3B6B-474C-AB4F-D2496B361841",variableType:4}
 */
var gHotelId = null;

/**
 * Callback method for when solution is opened.
 *
 * @properties={typeid:24,uuid:"DE9309EB-E557-411A-8151-16EAEA255F79"}
 */
function onSolutionOpen() {
	application.putClientProperty(APP_UI_PROPERTY.TABLEVIEW_WC_DEFAULT_SCROLLABLE, true);
	gHoy = application.getServerTimeStamp()
	gHoy.setHours(0,0,0,0)
	
	gUsuarioId	= security.getUserUID()
	cambiarEstilo()
	gClienteId 	= buscarCliente()
	gHotelId 	= cargarHoteles()
	cambiaHotel()
	cargarMonedas()
		
	altaReservaActual()
	databaseManager.addTableFilterParam('hoteleria', null, 'cadena_id', '=', globals.gCadenaLogin, 'FILTRO_CADENA')
}


/**
 * @properties={typeid:24,uuid:"582189DE-388A-400B-BA26-628ECE62D9E0"}
 */
function altaReservaActual() {
	databaseManager.setAutoSave(false)
	if (reserva_actual.getSize() == 0)
	{
		reserva_actual.newRecord()
		reserva_actual.origen 		= 'H'
		reserva_actual.estado		= 0			
		reserva_actual.cliente_id	= globals.gClienteId
		reserva_actual.pais_id		= clientes_conectado.pais_id
		if (security.getUserName() != 'cliente_comun' && security.isUserMemberOfGroup('hoteleria_Cliente'))
		{
			reserva_actual.mail			= security.getUserName()
			reserva_actual.usuario		= security.getUserUID()
		}
	}
	forms.reserva_4.controller.loadRecords(reserva_actual)
}

/**
 * @properties={typeid:24,uuid:"960A65DB-4EC6-4DBE-9095-4E1499585338"}
 */
function cargarMonedas()
{
	var $sql 		= 'select codigo, moneda_id from monedas where moneda_id = ? or moneda_id = 2'
	var $args 		= [ghotel_to_hoteles.hoteles_to_paises.moneda_id]
	var $ds 		= databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	application.setValueListItems('monedas',$ds)
	
	gMonedaNacional = ghotel_to_hoteles.hoteles_to_paises.moneda_id
	gMoneda 		= gMonedaNacional
}

/**
 * @properties={typeid:24,uuid:"20A731D6-A97C-4945-94E1-1A35A658A9EC"}
 */
function buscarTarifas()
{
	var $igual = 0
	for (var i = 1 ; i <= ghotel_to_hoteles.hoteles_to_paises.paises_to_locales.getSize() ; i++)
	{
		if (ghotel_to_hoteles.hoteles_to_paises.paises_to_locales.cod_locale == gLocale)
		{	
			$igual = 1
			break
		}
	}
	if (globals.gClienteId == 0)
	{
		if ($igual == 0)
			return ghotel_to_hoteles.tarifa_web_no_residente.toString()
		return ghotel_to_hoteles.tarifa_web_residente.toString()
	}
	else
	{
		var $txt = ''
		if ($igual == 1)
			$txt = 'AND t.moneda_id != 2'
		else
			$txt = 'AND t.moneda_id = 2'
		var $sql 	= 'select tc.tarifa_id from tarifas_x_cliente "tc" JOIN tarifas "t" ON t.tarifa_id = tc.tarifa_id WHERE tc.cliente_id = ? '+$txt
		var $args 	= [globals.gClienteId]
		var $ds 	= databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
		var $t 		= ''
		for (var i = 1 ; i <= $ds.getMaxRowIndex() ; i++)
		{
			$t += $ds.getValue(i,1)+','
		}
	}
	return $t.substring(0,$t.length-1)
}

/**
 * @properties={typeid:24,uuid:"7580A403-025F-4303-BB25-54F5480793E4"}
 */
function buscarCliente()
{
	var $usr = security.getUserName()
	if ($usr == 'cliente_comun')
	{
		return 0
	}
	else
	{
		if (gusuario_to_usuarios.cliente_id)
		{
			databaseManager.addTableFilterParam('hoteleria', null, 'cliente_id', '=', gusuario_to_usuarios.cliente_id)
			return gusuario_to_usuarios.cliente_id
		}
		return 0 //EMPLEADO DEL HOTEL
	}
}

/**
 * @properties={typeid:24,uuid:"228ACC0C-6098-4ED4-830F-A75487FF9309"}
 */
function cargarHoteles()
{
	if (gUsuarioId == 0)
	{
		var $hoteles = gcadena_to_hoteles
	}
	else
	{
		var $hoteles = gusuario_to_usuarios.usuarios_to_usuarios_x_hotel
	}

	var $cant 		= $hoteles.getSize()
	var $real 		= new Array()
	var $display	= new Array()
	
	for (var i = 1 ; i <= $cant ; i++)
	{
		var $hotel = $hoteles.getRecord(i)
		
		$real.push($hotel.hotel_id)
		if (gUsuarioId == 0)
		{
			$display.push($hotel.nombre_fantasia)
		}
		else
		{
			$display.push($hotel.usuarios_x_hotel_to_hoteles.nombre_fantasia)
		}
	}
	application.setValueListItems('hoteles',$display,$real)
	if ( globals.gHotelLogin )
		return globals.gHotelLogin
	return $hoteles.hotel_id

}

/**
 * @properties={typeid:24,uuid:"86CA4255-901A-46CB-BE59-4CC030E9E228"}
 */
function cambiaHotel()
{
	if (gHotelId != 0)
	{
		databaseManager.removeTableFilterParam('hoteleria','FILTRO_HOTEL')
		databaseManager.addTableFilterParam('hoteleria', null, 'hotel_id', '=', globals.gHotelId, 'FILTRO_HOTEL')
		globals.gTarifasCliente = buscarTarifas()
		globals.gCotizacion 	= buscarCotizacion()
		
		forms.reserva_1.onDataChangeHabitaciones()
		forms.reserva_1.menores()
		forms.reserva_2.onShow()
		
		forms.home_pie.onLoad()
		forms.home.onShow()
		cargarPromos()
		cargarMediosPago()
		
		dibujarServicios('servicios',  0, 20, 20, 20,'der', forms.home.elements.tab_servicios)
		dibujarServicios('servicios1', 0, 20, 20, 20,'izq', forms.reserva_2.elements.tab_servicios)
		dibujarServicios('servicios2', 0, 20, 20, 20,'izq', forms.reserva_3.elements.tab_servicios)
		dibujarServicios('servicios3', 0, 20, 20, 20,'izq', forms.reserva_4.elements.tab_servicios)
		dibujarServicios('servicios4', 0, 20, 20, 20,'izq', forms.reserva_5.elements.tab_servicios)
	}
}


/**
 * @properties={typeid:24,uuid:"99CBD3EC-0A11-46D5-94D4-7192CBEBDDB6"}
 */
function buscarCotizacion() {
	var $cotizacion
	if (ghotel_to_hoteles.cotizacion_dolar == null)
	{
		$cotizacion = moneda_nacional.cotizacion
	}
	else
	{
		$cotizacion = ghotel_to_hoteles.cotizacion_dolar
	}
	return $cotizacion
}
/**
 * @param {String} $name
 * @param {Number} xInicial
 * @param {Number} yInicial
 * @param {Number} ancho
 * @param {Number} alto
 * @param {String} alineacion
 * @param {RuntimeTabPanel} tab
 * 
 * @properties={typeid:24,uuid:"2E6EDF01-D65B-4A9F-B0E7-31F1D0CC037A"}
 */
function dibujarServicios($name, xInicial, yInicial, ancho, alto, alineacion, tab)
{
	tab.removeAllTabs()
	history.removeForm($name)
	solutionModel.removeForm($name)

	var $frm = solutionModel.getForm($name)
	if (!$frm)
	{
		$frm = solutionModel.newForm($name, null, 'hoteleria_'+gcadena_to_cadenas.estilo, false, tab.getWidth(), tab.getHeight())
		$frm.navigator 		= SM_DEFAULTS.NONE
		$frm.transparent 	= true
		$frm.scrollbars		= SM_SCROLLBAR.VERTICAL_SCROLLBAR_NEVER || SM_SCROLLBAR.HORIZONTAL_SCROLLBAR_NEVER
	}
	var $rel 		= ghotel_to_servicios_x_hotel
	var $cant 		= $rel.getSize()
	
	var $var = $frm.getVariable('fServicio'+1)
	var j = 1
	while ($var != null)
	{
		$frm.removeLabel('fServicio'+j)
		j++
		$var = $frm.getVariable('fServicio'+j)
	}
	
	j = 0
	var k = 1
	for (var i = 1 ; i <= $cant ; i++)
	{
		if ( i == 1 && $frm.getLabel('lbl_servicios') == null)
		{
			var $lbl = $frm.newLabel('<html><b>' + i18n.getI18NMessage('hoteleria.servicios')+':'+'</b></html>',xInicial,yInicial - 20,150,20)
			$lbl.styleClass = 'negro'
			$lbl.name		= 'lbl_servicios'
			$lbl.formIndex 	= 1
		}
		var $rcd = $rel.getRecord(i)
		var $var = $frm.getVariable('fServicio'+i)
		if ($var == null)
			$var = $frm.newVariable('fServicio'+i, JSVariable.MEDIA)
		forms[$name][$var.name] = $rcd.servicios_x_hotel_to_servicios.foto

		if (alineacion == 'izq')
		{
			var x = xInicial + (ancho * (k-1)) + 2
			var anchoTotal = x
			if ($frm.width - anchoTotal <= 20)
			{
				x = xInicial
				j++
				k = 1
			}
		}
		else
		{
			var x = $frm.width - (ancho * k) - 2
			var anchoTotal = x
			if ($frm.width - anchoTotal <= xInicial)
			{
				x = $frm.width - ancho - 2
				j++
				k = 1
			}
		}
		k++
		
		var $lbl = $frm.newLabel('', x, yInicial + (j * alto) , ancho, alto)
		$lbl.toolTipText 	= $rcd.servicios_x_hotel_to_servicios.descripcion
		$lbl.name 			= 'fServicio'+i
		$lbl.dataProviderID = $var.name
		$lbl.showClick 		= false
		$lbl.showFocus 		= false
		$lbl.formIndex 		= 1
	}
	forms[$name].controller.recreateUI()
	tab.addTab($name)
}

/**
 * @properties={typeid:24,uuid:"612596C7-3A70-404C-965B-18E4E92AF3AB"}
 */
function cargarPromos()
{
	forms.home.elements.tab_promos.removeAllTabs()
	history.removeForm('promos')
	solutionModel.removeForm('promos')
	
	var $cant = ghotel_to_promociones_cab.getSize()
	if ($cant == 0)
	{
		return
	}
	
	var $frm = solutionModel.newForm('promos',null,'hoteleria_'+gcadena_to_cadenas.estilo,false,1024,300)
	$frm.styleClass = 'blanco'
	$frm.navigator = SM_DEFAULTS.NONE
	$frm.scrollbars = SM_SCROLLBAR.HORIZONTAL_SCROLLBAR_NEVER || SM_SCROLLBAR.VERTICAL_SCROLLBAR_NEVER
	
	if ($cant > 3)
		$cant = 3
	
	var $title = $frm.newLabel(i18n.getI18NMessage('hoteleria.promociones'), 50,5,280,30)
	$title.styleClass 			= 'titulo'

	for (var i = 1 ; i <= $cant ; i++)
	{
		var $x = 50 + (300 * (i-1))
		var $rcd = ghotel_to_promociones_cab.getRecord(i)
		
		var $desc = $frm.newLabel($rcd.descripcion, $x,40,280,25)
		$desc.styleClass 			= 'negrita'
		$desc.horizontalAlignment 	= SM_ALIGNMENT.CENTER
		
		var $var = $frm.newVariable('fDesde'+i, JSVariable.MEDIA)
		forms[$frm.name][$var.name] = $rcd.fecha_desde
		var $var = $frm.newVariable('fHasta'+i, JSVariable.MEDIA)
		forms[$frm.name][$var.name] = $rcd.fecha_hasta
		var $var = $frm.newVariable('fNoches'+i, JSVariable.MEDIA)
		forms[$frm.name][$var.name] = $rcd.noches_minimo
		var $var = $frm.newVariable('fPromo'+i, JSVariable.MEDIA)
		forms[$frm.name][$var.name] = $rcd.promociones_cab_to_promociones_fotos.foto
				
		var $foto = $frm.newLabel('', $x, 65, 280, 130)
		$foto.name 					= 'fPromo'+i
		$foto.dataProviderID 		= $var.name	
		$foto.rolloverCursor 		= SM_CURSOR.HAND_CURSOR
		$foto.showClick 			= false
		$foto.showFocus 			= false
		$foto.horizontalAlignment 	= SM_ALIGNMENT.CENTER
		
		var $mtd = $frm.newMethod('function mostrarPromo'+i+'() { if (fDesde'+i+' == fHasta'+i+') { fHasta'+i+' = new Date(fDesde'+i+'.getFullYear(), fDesde'+i+'.getMonth(), fDesde'+i+'.getDate()+1,0,0,0,0) } if (fNoches'+i+' != 0) { fHasta'+i+' = new Date(fDesde'+i+'.getFullYear(), fDesde'+i+'.getMonth(), fDesde'+i+'.getDate()+fNoches'+i+',0,0,0,0) } globals.buscarParam(fDesde'+i+',fHasta'+i+',1,2,0)}')
		$foto.onAction 				= $mtd
		
		var $msj = $frm.newLabel('<html>' + $rcd.mensaje+'</html>', $x,200,280,75)
		$msj.styleClass = 'letrachica_negro'
		$msj.verticalAlignment = SM_ALIGNMENT.TOP
		
		var $btn = $frm.newLabel('Ver Más',$x + 95,280,90,20)
		$btn.rolloverCursor 	= SM_CURSOR.HAND_CURSOR
		$btn.showClick 			= false
		$btn.showFocus 			= false
		$btn.transparent		= false
		$btn.onAction			= $mtd
		$btn.styleClass			= 'buttonAmarillo'
	}
	
	forms[$frm.name].controller.recreateUI()
	forms.home.elements.tab_promos.addTab($frm.name)
}

/**
 * @properties={typeid:24,uuid:"C8B63109-0504-4765-9654-34431A3DAB2B"}
 */
function cargarMediosPago()
{
	var $ds = databaseManager.createEmptyDataSet()
	if (ghotel_to_hoteles.cobra_mostrador)
	{
		$ds.addRow(['i18n:hoteleria.paga.checkin',1])
	}
	if (ghotel_to_hoteles.cobra_tarjeta)
	{
		$ds.addRow(['i18n:hoteleria.paga.tarjeta',2])
	}
	if (ghotel_to_hoteles.cobra_transferencia)
	{
		$ds.addRow(['i18n:hoteleria.paga.tansferencia',3])
	}
	application.setValueListItems('condiciones_pago',$ds)
	
	dibujarTarjetas()
}

/**
 * @param {Date} fecha_desde
 * @param {Date} fecha_hasta
 * @param {Number} habitaciones
 * @param {Number} pasajeros
 * @param {Number} menores
 * 
 * @properties={typeid:24,uuid:"92D940F6-8E21-478A-8CB5-AF79277ED0A2"}
 */
function buscarParam(fecha_desde, fecha_hasta, habitaciones, pasajeros, menores)
{
	globals.gFechaDesde 			= fecha_desde
	globals.gFechaHasta 			= fecha_hasta
	forms.reserva_1.fHabitaciones 	= 1
	forms.reserva_1.fPasajeros 		= 2
	forms.reserva_1.fMenores 		= 0
	forms.reserva_1.buscar()
}

/**
 * @param {String} form
 * 
 * @properties={typeid:24,uuid:"2C857FAB-5CA3-4952-9BE5-074506E4AD0B"}
 */
function show(form) {
	forms[form].controller.show()
}

/**
 * Called when the valuelist needs data, it has 3 modes.
 * real and display params both null: return the whole list
 * only display is specified, called by a typeahead, return a filtered list
 * only real value is specified, called when the list doesnt contain the real value for the give record value, this will insert this value into the existing list
 *
 * @param {String} displayValue The value of a lookupfield that a user types
 * @param realValue The real value for a lookupfield where a display value should be get for
 * @param {JSRecord} record The current record for the valuelist.
 * @param {String} valueListName The valuelist name that triggers the method. (This is the FindRecord in find mode, which is like JSRecord has all the columns/dataproviders, but doesn't have its methods)
 * @param {Boolean} findMode True if foundset of this record is in find mode
 *
 * @returns {JSDataSet} A dataset with 1 or 2 columns display[,real]
 *
 * @properties={typeid:24,uuid:"8004817A-7FF9-45B0-B286-1E24BD2486D7"}
 */
function getDataSetForValueListClientes(displayValue, realValue, record, valueListName, findMode) {
	var args = null;
	/** @type  {JSDataSet} */
	var result = null;
	if (displayValue == null && realValue == null) {
		var $sql = 'SELECT razon_social, cliente_id FROM clientes ORDER BY razon_social'
		result = databaseManager.getDataSetByQuery('hoteleria',$sql,args,100)
		result.addRow(1,['SIN CLIENTE',0])
	} else if (displayValue != null) {
		var $sql = 'SELECT razon_social, cliente_id FROM clientes WHERE razon_social ilike ? ORDER BY razon_social'
		args = [displayValue + '%']
		result = databaseManager.getDataSetByQuery('hoteleria',$sql,args,100)
	} else if (realValue != null) {
		var $sql = 'SELECT razon_social, cliente_id FROM clientes WHERE cliente_id = ?'
		args = [realValue]
		result = databaseManager.getDataSetByQuery('hoteleria',$sql,args,1)
	}
	return result;

}

/**
 * @param {String} codigo
 * 
 * @return {Number}
 * @properties={typeid:24,uuid:"DB412828-5F5E-474C-BCF9-72C07811EB9A"}
 */
function generaDigitoVerif(codigo) {
	var $ar = [7,5,3,1]
	var j = 0
	var $total = 0
	
	for (var i = 0 ; i < codigo.length ; i++)
	{
		if (i != 0 && i%4 == 0)
			j += 4
		$total += codigo[codigo.length-i-1] * $ar[i-j]
	}
	var $dig = $total % 11
	if ($dig == 10)
		$dig = 0
	return $dig
}

/**
 * @param {String} destino
 * @param {String} asunto
 * @param {String} mensaje
 * @param {Array<plugins.mail.Attachment>} adjuntos
 * @param {Boolean} mensajeExito
 * 
 * @properties={typeid:24,uuid:"F32CC0A3-AC0E-440B-B80C-6F334F555D0E"}
 */
function enviarMail(destino, asunto, mensaje, adjuntos, mensajeExito) {
	
	var $Host 		= 'smtp.gmail.com';
	var $Puerto 	= 587;
	var $Hash 		= 0;
	var $Pass 		= 'servoy2009';
	var $Remitente 	= 'demoservoy@gmail.com';
	var $From		= ghotel_to_hoteles.nombre_fantasia
	
	var $exito = globals.mandarMail($Host,$Puerto,$Remitente,$From,$Pass,$Hash,destino,asunto,mensaje,adjuntos)
	if (!$exito) 
	{
		var error = plugins.mail.getLastSendMailExceptionMsg()
		globals.DIALOGS.showErrorDialog('Error','Error al mandar mail: '+error,'OK');
		application.output (error)
	}
	else
	{
		if (mensajeExito == true)
			globals.DIALOGS.showInfoDialog('Exito','Mail enviado correctamente','OK');
	}
}

/**
 * @param {Date} fecha_desde
 * @param {Date} fecha_hasta
 * @param {String} tarifas
 * @param {Number} habitacion
 * 
 * @properties={typeid:24,uuid:"629D5B89-973B-40DD-BE96-5D9D1256783D"}
 */
function buscarPromosMinimo(fecha_desde, fecha_hasta, tarifas, habitacion)
{
	var $noches = globals.diferenciaDias(fecha_hasta,fecha_desde)
	var $query = 'SELECT mensaje, porc_descuento FROM promociones_cab "c" '+
	  				'LEFT JOIN promociones_dtl "d" ON c.promociones_cab_id = d.promociones_cab_id '+
	  				'WHERE c.fecha_desde <= ? AND c.fecha_hasta >= ? AND d.tarifa_id IN (' + tarifas +') AND d.tipo_habitacion_id = ? '+
					'AND noches_minimo <= ? '+
					'ORDER BY noches_minimo'
	var $args = [fecha_desde, fecha_hasta, habitacion, $noches]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$query,$args,1)
	return $ds
}
/**
 * @param {Date} desde
 * @param {Date} hasta
 * @param {String} tarifas
 * @param {Number} tipo_hab
 * 
 * @properties={typeid:24,uuid:"ABCD97DE-603E-47C3-A8B7-72048C4464E6"}
 */
function hayPromocionDiaria(desde, hasta, tarifas, tipo_hab) {
	var $sql = 'SELECT c.promociones_cab_id FROM promociones_cab "c" '+
				'JOIN promociones_dtl "d" ON d.promociones_cab_id = c.promociones_cab_id '+
				'WHERE c.fecha_desde BETWEEN ? AND ? AND c.noches_minimo = 0 '+
				'AND d.tipo_habitacion_id = ? AND d.tarifa_id IN ('+tarifas+')'
	var $args = [desde, hasta, tipo_hab]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	
	return $ds.getMaxRowIndex()
}

/**
 * @param {Date} fecha
 * @param {String} tarifas
 * @param {Number} tipo_hab
 * 
 * @properties={typeid:24,uuid:"9862CEF7-5C14-40A3-950E-19C5A14CD5DD"}
 */
function buscarPromocionDiaria(fecha, tarifas, tipo_hab)
{
	var $sql = 'SELECT c.porc_descuento FROM promociones_cab "c" '+
				'JOIN promociones_dtl "d" ON d.promociones_cab_id = c.promociones_cab_id '+
				'WHERE c.fecha_desde = ? AND c.noches_minimo = 0 '+
				'AND d.tipo_habitacion_id = ? AND d.tarifa_id IN ('+tarifas+')'
	var $args = [fecha, tipo_hab]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	
	return $ds
}

/**
 * @properties={typeid:24,uuid:"3CE94ADD-6457-4E4D-A634-D94F5F08C753"}
 */
function cambiarEstilo()
{
	if (gcadena_to_cadenas.estilo != 'azul')
	{
		var $forms = forms.allnames
		var $cant = $forms.length
		for (var i = 0 ; i < $cant ; i++)
		{
			var $name = $forms[i]
			if ($name.indexOf('dialogs_') == -1)
			{
				//application.output($name)
				var $frm = solutionModel.getForm($name)
				$frm.styleName = 'hoteleria_'+gcadena_to_cadenas.estilo
				forms[$name].controller.recreateUI()
			}
		}
	}
}

/**
 * @properties={typeid:24,uuid:"832596E1-24C3-4086-949B-DC939D825043"}
 */
function dibujarTarjetas() {
	var $sql = 'SELECT banco_id, medio_pago_id, cuotas, porc_interes, hoteles_medios_pago_dtl_id '+
	'FROM hoteles_medios_pago_dtl "d" '+
	'JOIN hoteles_medios_pago "mp" ON mp.hoteles_medios_pago_id = d.hoteles_medios_pago_id '+
	//'JOIN bancos "b" ON mp.banco_id = b.banco_id '+
	'WHERE mp.hotel_id = ? '+
	'ORDER BY cuotas, porc_interes;'
		
	var $args = [2]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	var $cant = $ds.getMaxRowIndex()
	var i = 1
	var $cuotas_ant = $ds.getValue(i,3)
	var $int_ant = $ds.getValue(i,4)
	
	var $frm 		= solutionModel.newForm('tarjetas_2',null,"hoteleria_azul",false,400,400)
	$frm.navigator 	= SM_DEFAULTS.NONE
	$frm.styleClass = 'blanco'
	
	var $x 			= 100
	var $y 			= 0
	var $fila 		= 1
	/** @type {JSFoundSet<db:/hoteleria/medios_pago>}*/
	var $tarjetas 	= databaseManager.getFoundSet('hoteleria','medios_pago')
	var $metodo		= $frm.newMethod('function onClick(event){ globals.eligeTarjeta(event.getElementName()) }')
	
	while (i <= $cant)
	{
		var $lbl = $frm.newLabel($cuotas_ant + ' cuotas: ' + $int_ant + '% de interés',20,$y,150,20)
		$lbl.transparent = true
		$lbl.styleClass = 'letrachica_negro'
		
		while ($cuotas_ant == $ds.getValue(i,3) && $int_ant == $ds.getValue(i,4))
		{
			$tarjetas.loadRecords($ds.getValue(i,2))
			var $var = $frm.newVariable('fLogo'+i,JSVariable.MEDIA)
			forms[$frm.name][$var.name] = $tarjetas.logo

			var $logo = $frm.newLabel('', $x + ($fila*80), $y , 80, 26)
			$logo.name 				= 'fTarjeta'+i
			$logo.dataProviderID 	= $var.name
			$logo.transparent		= true
			$logo.horizontalAlignment = SM_ALIGNMENT.CENTER
			
			
			var $banco = $frm.newLabel(application.getValueListDisplayValue('bancos',$ds.getValue(i,1)),$x+ ($fila*80),$y,80,37)
			$banco.transparent 			= true
			$banco.styleClass 			= 'letrachica_negro'
			$banco.horizontalAlignment 	= SM_ALIGNMENT.CENTER
			$banco.verticalAlignment	= SM_ALIGNMENT.BOTTOM
			$banco.showClick			= false
			$banco.showFocus			= false
			$banco.rolloverCursor		= SM_CURSOR.HAND_CURSOR
			$banco.name					= $ds.getValue(i,5)
			$banco.onAction				= $metodo
			
			$fila++
			i++
		}
		$cuotas_ant = $ds.getValue(i,3)
		$int_ant 	= $ds.getValue(i,4)
		$y += 40
		$fila = 1
	}
	
	forms[$frm.name].controller.recreateUI()
	forms.reserva_4_pago.elements.tab_tarjetas.addTab($frm.name)
	//forms[$frm.name].controller.show()
}
/**
 * @param {String} medio_id
 * 
 * @properties={typeid:24,uuid:"F6AFAC77-277A-4071-AAE2-6DB494046E25"}
 */
function eligeTarjeta(medio_id) {
	var $sql = 'SELECT banco_id, medio_pago_id, cuotas, porc_interes, hoteles_medios_pago_dtl_id '+
				'FROM hoteles_medios_pago_dtl "d" '+
				'JOIN hoteles_medios_pago "mp" ON mp.hoteles_medios_pago_id = d.hoteles_medios_pago_id '+
				'WHERE d.hoteles_medios_pago_dtl_id = ? '
	var $args = [medio_id * 1]
	var $ds = databaseManager.getDataSetByQuery('hoteleria',$sql,$args,-1)
	
	var $banco = application.getValueListDisplayValue('bancos',$ds.getValue(1,1))
	var $tarjeta = $ds.getValue(1,2)
	var $cuotas = $ds.getValue(1,3)
	var $interes = $ds.getValue(1,4)
	if ($ds.getMaxRowIndex() == 1)
		globals.DIALOGS.showInfoDialog('Aviso','Selección: '+ $banco +' - '+ $tarjeta +' - '  + $cuotas + ' - ' + $interes)
	else
		globals.DIALOGS.showErrorDialog('Error','No encontro')
}
